package repository.archetypes
import grails.converters.*

class ArchetypeController {
    def archetypeService    
    
    def getAllDetails = {                
        try {            
            def jerarquia = doGetJerarquiaDetallesArtefacto()
            
            if(jerarquia){
                render jerarquia
            } else {
                response.status = 404            
                render (contentType:'text/xml'){ 
                    error (
                        message:"Error"
                    )
                }
            }
        } catch(Exception ex){
            render (contentType:'text/xml'){ 
                error (
                    message:"Error"
                )
            } 
        }
    }
    
    def get = {                
        try {
            String n = params.nombreArchivo
            String v = params.version
            String p = params.path
            def arquetipo = doGetSingle(n,v,p)
            
            if(arquetipo){
                render arquetipo
            } else {
                response.status = 404            
                render (contentType:'text/xml'){ 
                    error {
                        nombreArchivo(params.nombreArchivo)
                        version(params.version)
                        path(params.path)
                    }
                }
            }
        } catch(Exception ex){
            render (contentType:'text/xml'){ 
                error {
                    message("Error")
                }
            } 
        }
    }
    
    /************** Auxiliares **************/    
    private XML doGetJerarquiaDetallesArtefacto(){
        def jerarquia = archetypeService.getJerarquiaDetallesArtefacto()  
        
        return jerarquia ? jerarquia as XML : null        
    }
    
    private XML doGetSingle(String n, String v, String p){
        def arquetipo = archetypeService.getArquetipo(n,v,p)  
        
        return arquetipo ? arquetipo as XML : null        
    }
}

